A conventional mathematical tool, such as such as MATLAB™ from MathWorks™, Inc., of Natick, Mass., provides a comprehensive technical computing environment for performing numerical linear algebraic calculations, solving ordinary differential equations, analyzing data, and visualizing solutions to complex mathematical formulas by generating graphs or other images. The computing environment often provides a high-level programming language that includes a variety of operators and programming commands.
Engineers use such mathematical tools for a variety of applications such as designing complex mechanical and electrical control systems, solving optimization problems and performing statistical analysis. In addition, engineers often use mathematical tools in conjunction with a simulation tool for defining and simulating complex mathematical models. For example, manufacturers of mechanical and electronic systems, e.g., cars and integrated circuits, use simulation tools to help them design their products. These tools allow designers to build and test mathematical models of their systems before building a physical prototype. Commercial simulation models can be extremely complex and may include thousands of interconnected functional blocks. Using a simulation tool, a designer can simulate and observe changes in a model over a period of time, typically represented as a series of discrete instants, called time steps, such as 1 millisecond, 1 second, 2 hours, etc.
Starting from a set of initial conditions, specified by the designer, the simulation tool drives the model and determines the state of the model at various time steps. Most technical computing environments provided by conventional mathematical tools are “array-based” such that data types are primarily represented as two-dimensional arrays.
In other words, these computing environments do not distinguish between a scalar, a vector, or a matrix. As a result, it is difficult to interface the technical computing environment to an object-oriented environment, such as Java. Because the technical computing environment does not distinguish between scalars, vectors and matrices, it is difficult to invoke methods that have the same name and are only distinguishable by the data types of their input parameters. In addition, it is difficult to translate data from the array-based computing environment of the mathematical tool to the object-oriented environment.